static void gtk_range_unrealize (GtkWidget *widget);
static void gtk_range_map (GtkWidget *widget);
static void gtk_range_unmap (GtkWidget *widget);
-static gboolean gtk_range_draw (GtkWidget *widget,
- cairo_t *cr);
+static void gtk_range_snapshot (GtkWidget *widget,
+ GtkSnapshot *snapshot);
static void gtk_range_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
guint n_press,
GtkAllocation *out_clip,
gpointer data);
static gboolean gtk_range_render_trough (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
GtkAllocation *out_clip,
gpointer data);
static gboolean gtk_range_render (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
widget_class->unrealize = gtk_range_unrealize;
widget_class->map = gtk_range_map;
widget_class->unmap = gtk_range_unmap;
- widget_class->draw = gtk_range_draw;
+ widget_class->snapshot = gtk_range_snapshot;
widget_class->event = gtk_range_event;
widget_class->scroll_event = gtk_range_scroll_event;
widget_class->key_press_event = gtk_range_key_press;
GTK_WIDGET (range),
gtk_range_measure,
gtk_range_allocate,
- gtk_range_render,
NULL,
+ gtk_range_render,
NULL, NULL);
priv->contents_gadget = gtk_box_gadget_new ("contents",
GTK_WIDGET (range),
NULL, NULL,
gtk_range_measure_trough,
gtk_range_allocate_trough,
- gtk_range_render_trough,
NULL,
+ gtk_range_render_trough,
NULL, NULL);
gtk_css_gadget_set_state (priv->trough_gadget,
gtk_css_node_get_state (widget_node));
static gboolean
gtk_range_render_trough (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
* so we let it...
*/
if (GTK_IS_COLOR_SCALE (widget))
- gtk_color_scale_draw_trough (GTK_COLOR_SCALE (widget), cr, x, y, width, height);
+ gtk_color_scale_snapshot_trough (GTK_COLOR_SCALE (widget), snapshot, x, y, width, height);
if (priv->show_fill_level &&
gtk_adjustment_get_upper (priv->adjustment) - gtk_adjustment_get_page_size (priv->adjustment) -
gtk_adjustment_get_lower (priv->adjustment) != 0)
- gtk_css_gadget_draw (priv->fill_gadget, cr);
+ gtk_css_gadget_snapshot (priv->fill_gadget, snapshot);
if (priv->has_origin)
- gtk_css_gadget_draw (priv->highlight_gadget, cr);
+ gtk_css_gadget_snapshot (priv->highlight_gadget, snapshot);
return gtk_widget_has_visible_focus (widget);
}
static gboolean
gtk_range_render (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
GtkRange *range = GTK_RANGE (widget);
GtkRangePrivate *priv = range->priv;
- gtk_css_gadget_draw (priv->contents_gadget, cr);
+ gtk_css_gadget_snapshot (priv->contents_gadget, snapshot);
/* Draw the slider last, so that e.g. the focus ring stays below it */
- gtk_css_gadget_draw (priv->slider_gadget, cr);
+ gtk_css_gadget_snapshot (priv->slider_gadget, snapshot);
return FALSE;
}
-static gboolean
-gtk_range_draw (GtkWidget *widget,
- cairo_t *cr)
+static void
+gtk_range_snapshot (GtkWidget *widget,
+ GtkSnapshot *snapshot)
{
GtkRange *range = GTK_RANGE (widget);
GtkRangePrivate *priv = range->priv;
- gtk_css_gadget_draw (priv->gadget, cr);
-
- return GDK_EVENT_PROPAGATE;
+ gtk_css_gadget_snapshot (priv->gadget, snapshot);
}
static void
GtkScale *scale);
static void gtk_scale_screen_changed (GtkWidget *widget,
GdkScreen *old_screen);
-static gboolean gtk_scale_draw (GtkWidget *widget,
- cairo_t *cr);
+static void gtk_scale_snapshot (GtkWidget *widget,
+ GtkSnapshot *snapshot);
static void gtk_scale_real_get_layout_offsets (GtkScale *scale,
gint *x,
gint *y);
gobject_class->finalize = gtk_scale_finalize;
widget_class->screen_changed = gtk_scale_screen_changed;
- widget_class->draw = gtk_scale_draw;
+ widget_class->snapshot = gtk_scale_snapshot;
widget_class->size_allocate = gtk_scale_size_allocate;
widget_class->measure = gtk_scale_measure;
static gboolean
gtk_scale_render_value (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (gadget));
layout = gtk_scale_get_layout (scale);
- gtk_render_layout (context, cr, x, y, layout);
+ gtk_snapshot_render_layout (snapshot, context, x, y, layout);
gtk_style_context_restore (context);
widget, NULL, NULL,
gtk_scale_measure_value,
NULL,
- gtk_scale_render_value,
NULL,
+ gtk_scale_render_value,
NULL, NULL);
g_signal_connect (gtk_css_gadget_get_node (priv->value_gadget), "style-changed",
G_CALLBACK (gtk_scale_value_style_changed), scale);
static gboolean
gtk_scale_render_mark_indicator (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
GtkStyleContext *context;
GtkOrientation orientation;
+ GdkRGBA color;
orientation = gtk_orientable_get_orientation (GTK_ORIENTABLE (widget));
context = gtk_widget_get_style_context (widget);
gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (gadget));
+ gtk_style_context_get_color (context, &color);
if (orientation == GTK_ORIENTATION_HORIZONTAL)
- gtk_render_line (context, cr,
- x + width / 2, y,
- x + width / 2, y + height);
+ gtk_snapshot_append_color_node (snapshot,
+ &color,
+ &GRAPHENE_RECT_INIT(x + width / 2, y, 1, height),
+ "ScaleMark");
else
- gtk_render_line (context, cr,
- x, y + height / 2,
- x + width, y + height / 2);
+ gtk_snapshot_append_color_node (snapshot,
+ &color,
+ &GRAPHENE_RECT_INIT(x, y + height / 2, width, 1),
+ "ScaleMark");
gtk_style_context_restore (context);
static gboolean
gtk_scale_render_mark_label (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (gadget));
gtk_css_node_update_layout_attributes (gtk_css_gadget_get_node (gadget), mark->layout);
- gtk_render_layout (context, cr, x, y, mark->layout);
+ gtk_snapshot_render_layout (snapshot, context, x, y, mark->layout);
gtk_style_context_restore (context);
static gboolean
gtk_scale_render_mark (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
{
GtkScaleMark *mark = user_data;
- gtk_css_gadget_draw (mark->indicator_gadget, cr);
+ gtk_css_gadget_snapshot (mark->indicator_gadget, snapshot);
if (mark->label_gadget)
- gtk_css_gadget_draw (mark->label_gadget, cr);
+ gtk_css_gadget_snapshot (mark->label_gadget, snapshot);
return FALSE;
}
static gboolean
gtk_scale_render_marks (GtkCssGadget *gadget,
- cairo_t *cr,
+ GtkSnapshot *snapshot,
int x,
int y,
int width,
(mark->position == GTK_POS_BOTTOM && gadget == priv->top_marks_gadget))
continue;
- gtk_css_gadget_draw (mark->gadget, cr);
+ gtk_css_gadget_snapshot (mark->gadget, snapshot);
}
return FALSE;
}
-static gboolean
-gtk_scale_draw (GtkWidget *widget,
- cairo_t *cr)
+static void
+gtk_scale_snapshot (GtkWidget *widget,
+ GtkSnapshot *snapshot)
{
GtkScale *scale = GTK_SCALE (widget);
GtkScalePrivate *priv = scale->priv;
if (priv->top_marks_gadget)
- gtk_css_gadget_draw (priv->top_marks_gadget, cr);
+ gtk_css_gadget_snapshot (priv->top_marks_gadget, snapshot);
if (priv->bottom_marks_gadget)
- gtk_css_gadget_draw (priv->bottom_marks_gadget, cr);
+ gtk_css_gadget_snapshot (priv->bottom_marks_gadget, snapshot);
- GTK_WIDGET_CLASS (gtk_scale_parent_class)->draw (widget, cr);
+ GTK_WIDGET_CLASS (gtk_scale_parent_class)->snapshot (widget, snapshot);
if (priv->value_gadget)
- gtk_css_gadget_draw (priv->value_gadget, cr);
-
- return FALSE;
+ gtk_css_gadget_snapshot (priv->value_gadget, snapshot);
}
static void
widget, NULL, NULL,
gtk_scale_measure_marks,
gtk_scale_allocate_marks,
- gtk_scale_render_marks,
NULL,
+ gtk_scale_render_marks,
NULL, NULL);
gtk_css_node_insert_after (widget_node,
gtk_css_gadget_get_node (priv->top_marks_gadget),
widget, NULL, NULL,
gtk_scale_measure_marks,
gtk_scale_allocate_marks,
- gtk_scale_render_marks,
NULL,
+ gtk_scale_render_marks,
NULL, NULL);
gtk_css_node_insert_before (widget_node,
gtk_css_gadget_get_node (priv->bottom_marks_gadget),
widget, NULL, NULL,
gtk_scale_measure_mark,
gtk_scale_allocate_mark,
- gtk_scale_render_mark,
NULL,
+ gtk_scale_render_mark,
mark, NULL);
gtk_css_gadget_set_state (mark->gadget, gtk_css_node_get_state (marks_node));
widget, mark->gadget, NULL,
NULL,
NULL,
- gtk_scale_render_mark_indicator,
NULL,
+ gtk_scale_render_mark_indicator,
mark, NULL);
if (mark->markup && *mark->markup)
{
NULL : mark->indicator_gadget,
gtk_scale_measure_mark_label,
NULL,
- gtk_scale_render_mark_label,
NULL,
+ gtk_scale_render_mark_label,
mark, NULL);
g_signal_connect (gtk_css_gadget_get_node (mark->label_gadget), "style-changed",
G_CALLBACK (gtk_scale_mark_style_changed), mark);